package com.chuangjiangx.member.basic.ddd.dal.mapper;

import com.chuangjiangx.member.basic.ddd.dal.dto.*;
import com.chuangjiangx.member.basic.ddd.query.condition.MemberCondition;
import com.chuangjiangx.member.basic.ddd.query.condition.QueryMemberAccountCondition;
import com.chuangjiangx.member.basic.ddd.query.condition.QueryMemberInfoCondition;
import com.chuangjiangx.member.basic.ddd.query.condition.SearchMemberInfoCondition;
import com.chuangjiangx.member.score.ddd.dal.condition.MemberScoreGiftCondition;
import com.chuangjiangx.member.score.ddd.dal.dto.MemberScoreGift;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;

import java.util.List;

public interface MemberDalMapper{

    /**
     * 会员列表--商户平台
     */
    List<MemberList> queryMemberList(MemberCondition condition, RowBounds rowBounds);

    /**
     * 统计会员列表总数--商户平台
     */
    Integer countMemberList(MemberCondition condition);


    /**
     * 查询所有的会员
     */
    List<MemberList> queryMemberListAll(@Param("merchantId") Long merchantId);

    /**
     * 根据id查询会员信息--商户平台
     */
    MemberDetailForMerchant queryMemberDetailById(QueryMemberInfoCondition queryMemberInfoCondition);

    /**
     * 根据会员手机号码查询会员信息-客户端
     */
    MemberDetail searchMemberDetailByMobile(SearchMemberInfoCondition searchMemberInfoCondition);

    /**
     * 根据会员id查询会员信息-H5
     */
    MemberDetail searchMemberDetailById(Long memberId);

    /**
     * 根据会员人脸id查询会员信息-H5
     */
    MemberDetail searchMemberDetailByFaceId(String faceId);

    /**
     * 会员账户信息
     */
    MemberAccount queryMemberAccount(QueryMemberAccountCondition queryMemberAccountCondition);



    /*以下内容暂时没有改变*/

    List<MemberScoreGift> queryMemberScoreGift(MemberScoreGiftCondition condition, RowBounds rowBounds);


    /**
     * 查询所有的门店以及模糊查询
     */
    List<StoreNameForList> queryAllStoreName(@Param(value = "storeName") String storeName, @Param(value = "merchantId") Long merchantId);

    boolean isCanUseMember2(Long merchantId);
    boolean isOpenMember2(Long merchantId);
    Integer queryConfigPayChannelId(@Param(value = "merchantId") Long merchantId,@Param(value = "payType") Integer payType,@Param(value = "payEntry") Integer payEntry);
}
